Skip to content

Announce a finished transcript in the meeting pill - #9

Merged
TerrifiedBug merged 1 commit into
mainfrom
feat/transcript-ready-toast
Aug 19, 2026
Merged

Announce a finished transcript in the meeting pill#9
TerrifiedBug merged 1 commit into
mainfrom
feat/transcript-ready-toast

Conversation

@TerrifiedBug

Copy link
Copy Markdown
Owner

The daemon fired an osascript display notification when a recorded session finished transcribing, which lands in Notification Center attributed to Script Editor and gives you nowhere to click.

This reuses the pill the meeting prompt already draws — same PromptPanel, same placement under the menu bar, plus a Glass chime and one Open button that reveals transcript.md in Finder. No Dismiss: an announcement has nothing to decline, so it leaves on its own after six seconds.

No new file, no new class, no new dependency. PromptPanel gains a toast: Bool that drops the Dismiss button and swaps the 120 s prompt lifetime for 6 s; the coordinator gains one injectable handler mirroring setStatusHandler.

Collision rules

Both live top-centre, so:

  • a toast arriving while a prompt is up falls back to the notification — a question must not be covered by an announcement, and the announcement still reaches the user;
  • a prompt arriving evicts a live toast.

What deliberately did not change

  • One-shot yap record sets no handler and keeps the notification: it is a ParsableCommand with no AppKit run loop.
  • The failure branch stays on notifyUser — a failure should persist in Notification Center, not vanish in six seconds.

Verification

On an M4, against the resume path (delete transcript.json/.md from a session, relaunch the daemon, it re-transcribes at startup):

  • pill appears top-centre with the chime and fades by itself;
  • accessibility query of the toast window reports exactly one button, [Open], at 790,56 — confirming the Dismiss button is omitted and the panel sits under the menu bar;
  • clicking it left Finder selecting document file "transcript.md" of folder "2026.07.31-1216" — the right file in the right session;
  • one-shot yap record --out /tmp/… still transcribes and notifies, no pill;
  • NSSound(named: "Glass")?.play() as a temporary was checked rather than assumed: a weak reference to it stays alive with isPlaying == true after the only local reference dies, so AppKit retains it for the duration and no stored property is needed.

No audio or transcription path touched, so the benchmark table is unaffected.

Full local CI gate green before pushing: swift test, swift build -c release --arch arm64, the three smoke subcommands, and the embedded __info_plist check.

The daemon fired an osascript notification when a recorded session finished
transcribing, which lands in Notification Center looking like it came from
Script Editor and gives you nowhere to click.

Reuse the pill the meeting prompt already draws: same panel, same placement
under the menu bar, a Glass chime, and one Open button that reveals
transcript.md in Finder. No Dismiss — an announcement has nothing to decline,
so it leaves on its own after six seconds.

A live prompt is a question and must not be covered by an announcement, so a
toast arriving while one is up falls back to the notification; a prompt
arriving evicts the toast, since both occupy the same spot.

The coordinator learns one injectable handler, mirroring setStatusHandler.
One-shot `yap record` sets none and keeps the notification: it has no
AppKit run loop, and a failure should persist rather than vanish in six
seconds — so the failure branch stays on notifyUser too.
@TerrifiedBug
TerrifiedBug merged commit 1e8c8f7 into main Aug 19, 2026
1 check passed
@TerrifiedBug
TerrifiedBug deleted the feat/transcript-ready-toast branch August 19, 2026 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant